package _33_丑数;

import java.util.LinkedList;
import java.util.List;

/*

题目描述
把只包含质因子2、3和5的数称作丑数（Ugly Number）。
例如6、8都是丑数，但14不是，因为它包含质因子7。
习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
 */
public class Solution {
    public int GetUglyNumber_Solution(int index) {
        int a1 = 2, a2 = 3, a3 = 5;
        int t1 = 0, t2 = 0, t3 = 0;
        List<Integer> list = new LinkedList<>();
        list.add(1);
        while (list.size() < index) {
            int b1 = a1 * list.get(t1);           // 1
            int b2 = a2 * list.get(t2);           // 1
            int b3 = a3 * list.get(t3);           // 1
            int add = Math.min(b1, Math.min(b2, b3)); // 2
            list.add(add);
            if (b1 == add) {
                t1++;                            //  t1=2
            }
            if (b2 == add) {
                t2++;
            }
            if (b3 == add) {
                t3++;
            }


        }
        list.stream().forEach(System.out::println);
        return list.get(index - 1);
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.GetUglyNumber_Solution(20);
    }
}
